After the CPU, memory represents the most important module of a microprocessor system. With most microprocessor based systems, memory is utilized for two functions. First, it is utilized to store program instructions, and second, it is utilized to store data. Once initialized, the microprocessor fetches a given set of instructions from the program memory and executes these instructions in a predetermined manner according to the particular program. Typically, this is a Read only function and the program memory is usually realized with a Read Only Memory (ROM). During execution of the program instructions, data is either generated or manipulated, and is read to or written from a random access memory (RAM). The size of the memory required for both the program memory and the data memory depends upon the particular application of the microprocessor, the size of the program, etc.
Present day microprocessors are packaged in standard packages which typically provide forty pins. Larger packages are now utilized with pin counts up to sixty-eight. The pins provide the important function of interfacing the microprocessor with the outside world. In order to accommodate this number of pins, the internal architecture of the microprocessor is designed to maximize the amount of information that can be transferred between the microprocessor and the outside world through the pins. It is therefore desirable to integrate as many functions as possible within the confines of the package to decrease the need to interface with peripheral devices.
Typically, a predetermined number of commonly used program instructions are stored in an onboard ROM with some RAM provided in the form of a scratch pad memory. However, when programs exceed the capacity of the internal ROM, it is necessary to go outside of the microprocessor to fetch the program instructions from an external program memory, bring the program instructions back in, and store them in internal registers. With respect to data, most microprocessors have internal RAM which can store a small amount of data, with the predominant storage medium residing outside of the microprocessor in the form of an external data memory. One reason that onboard data memory has been limited is size constraints, complexity, etc. For example, if a large bank of RAM were incorporated on board the CPU, this would require the use of a relatively high density RAM structure. This typically results in lower yield and more complex processing during fabrication. The manufacturers have therefore avoided large banks of RAM for use as internal data memory.
In order for a microprocessor to interface with external program and data memories, it is necessary to transfer addresses, data and instructions through the pins. Typically, the pins are grouped as to function so as to define system ports. When interfacing with the external program and data memories, it is necessary to dedicate a number of the system ports to the transfer of addresses, instructions and data. This therefore reduces the number of ports that the CPU can interface with other peripheral circuitry.
In view of the above disadvantages, there therefore exists a need for a microprocessor based system that provides additional memory space internal to the chip for both storage of program instructions and storage of data such that the microprocessor does not require the use of the system ports to interface with external program and data memory.